package com.cskaoyan.javase.object.wrapper;

/**
 * Java中的包装类型
 * Integer.MAX_VALUE  Integer是int类型的包装类型 Integer.MAX_VALUE是int类型的最大值
 * 有符号数的最大值：
 * 1. Integer.MAX_VALUE的二进制是0111 1111 1111 1111 1111 1111 1111 1111
 * 2. Integer.MIN_VALUE的二进制是1000 0000 0000 0000 0000 0000 0000 0000
 * 3. Integer.MAX_VALUE + 1 = Integer.MIN_VALUE
 * 所以很明显，上述代码，循环会从int类型最大值循环到int类型最小值，再循环到int类型最大值....显然，这是一个死循环！
 * 当然，让这个代码不死循环也很简单，只需要修改循环条件即可。
 *
 * 什么是包装类？
 * 大家都知道：Java是面向对象的语言，Java当中万物皆对象。
 * 但这句话并不严谨，因为Java不是完全面向对象的编程语言。因为Java还有基本数据类型变量，它们不是对象。
 *
 * 所以为了弥补基本数据类型变量非对象的尴尬境地，
 * 并且我们确有需求把基本数据类型变量也当成一个对象使用，Java引入包装类的技术。
 * 所谓包装类，就是把基本数据类型包装成引用数据类型，变成一个个对象。
 *
 * 以下包装类和基本数据类型对应关系：
 * 包装类型对照表
 *   基本数据类型 	       对应包装类
 *    byte  	  java.lang.Byte
 *    short 	  java.lang.Short
 *     int  	 java.lang.Integer
 *     int本身就是单词integer的缩写
 *    long  	  java.lang.Long
 *    float 	  java.lang.Float
 *   double 	 java.lang.Double
 *   boolean	 java.lang.Boolean
 *    char  	java.lang.Character
 *    char本身就是单词Character的缩写
 * 除此之外，还有一个比较独特的包装类型：返回值类型中的void对应包装类型Void，
 * 它的主要作用是：
 * 在反射中，描述没有返回值的void方法的返回值类型。
 *
 *
 * @since 10:07
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    static int end = Integer.MAX_VALUE;
    static int start = end - 5;

    public static void main(String[] args) {
        int count = 0;
        // Non-static field 'start' cannot be referenced from a static context
        for (int i = start; i < end; i++) {
            count++;
        }
        System.out.println(count);
    }
}
